The invention relates generally to computer networks, and more particularly, to an apparatus and method for maintaining cache coherency between a web server and its clients.
Personal computers or workstations may be linked in a computer network to allow the sharing of data, applications, files, and other resources. In a client/server network, the sharing of resources is accomplished through the use of one or more file servers. Each file server includes a processing unit that is dedicated to managing centralized resources and to sharing these resources with other file servers and/or various personal computers and workstations, which are known as the "clients" of the server.
Each client includes a central processing unit ("CPU"), a memory which is directly accessible to the CPU, and one or more input/output ("I/O") devices such as a screen, keyboard, mouse, and the like. The client's memory may be battery-backed, but more often the memory is volatile memory (e.g., random access memory or "RAM") that loses data if power to the client is interrupted or if the client is rebooted. Some clients also have local non-volatile data stores, such as a local hard disk, while other clients have no local non-volatile store.
Each file server has a CPU, a volatile memory, various I/O devices, and at least one non-volatile data store. The non-volatile data store includes a controller and a non-volatile medium. To access the medium, the server's CPU sends read and write requests to the controller, which then attempts to carry out the request. Write requests are accompanied by file data which is destined for storage on the medium, or by a memory address identifying the present location of such data. Read requests are accompanied by a memory address which identifies memory destined to receive file data copied from the medium.
One example of a client/server network is a centralized web server that serves a distributed network of cache servers. The web server acts as a hub for distributing data back and forth between the cache servers and other clients, as well as providing unique data specific to the web server. The cache servers may contain unique information or they may simply mirror the information found on the web server. Alternatively, the cache servers may contain unique information and also mirror all or part of the web server data, allowing each cache server to present customized information that is tailored to meet a specific set of needs.
In a more explicit example, a major car manufacturer (hereinafter "Manufacturer") may operate a web server with data for all of its products and services. In this example, Manufacturer wants to provide rich, up-to-the-minute, multimedia web information at each dealer location (there may be thousands of dealers), while still being able to centrally manage the information. Centralized management allows Manufacturer to control the quality of information available, provide timely updates and additions, and ensure uniformity among its dealers, along with other benefits too numerous to mention. Information provided by Manufacturer could include: online versions of all maintenance manuals, video clips of new cars and sales pitches, the ability to online order custom tailored cars, the ability to track recalls, the ability to locate an existing new vehicle at any other dealer, and/or a comparison of Manufacturer product versus competitors. This data is very large and downloading it to the dealers could take hours. No dealer or customer is willing to wait for the data to be downloaded during a single session, so the data must be readily available when requested if it is to be useful.
The normal solution to the problem is to place a cache server (like Novell's Border Manager) at each Manufacturer dealer to accelerate delivery. In addition, this enables the dealer to include information for that particular dealer. However, this solution creates additional problems. For one, the cache server must maintain coherent, or up-to-date, data to guarantee correct information while maintaining timely user access times. Therefore, the cache server must sustain critical performance and reduce or eliminate cache misses. Also, conventional cache servers must periodically ping, or query, the origin web server to blindly search for new and/or updated material. These queries create huge amounts of network traffic and web server congestion.
Therefore, what is needed is a system and method that allows web data to be immediately accessible at various locations in a networked server/client arrangement.
Also what is needed is a system and method that provides up-to-date information at various locations in a networked server/client arrangement.
Furthermore, what is needed is a system and method that does not congest servers and/or networks with unnecessary traffic.